package cl.tinet.trainee.salas.ejb;

import java.util.List;

import javax.ejb.Remote;

import cl.tinet.trainee.salas.model.Usuario;
import cl.tinet.trainee.salas.model.excepciones.GeneralException;
import cl.tinet.trainee.salas.model.excepciones.UsuarioContieneReservas;
import cl.tinet.trainee.salas.model.excepciones.UsuarioNoExisteException;


@Remote
public interface UsuarioBeanInterfaz {

    /**
     * 
     * Buscar un usuario BEAN.
     *
     * @param usuario
     * @return
     * @throws UsuarioNoExisteException 
     * @throws GeneralException 
     */
	Usuario buscarUsuarioBean(Usuario usuario) throws UsuarioNoExisteException, GeneralException;
	/**
	 * 
	 * Buscar un usuario antes de agregar.(Que no exista.)
	 *
	 * @param datoUsuario
	 * @throws GeneralException
	 */
	void buscarUsuarioAgregado(Usuario usuario) throws GeneralException;
	/**
	 * 
	 * Modificar los datos de un usuario.
	 *
	 * @param datoUsuario
	 */
	void modificarUsuarioBean(Usuario usuario);
	/**
	 * 
	 * Eliminado fisico de un usuario.
	 *
	 * @param datoUsuario
	 * @throws UsuarioContieneReservas 
	 */
	void eliminarUsuarioBean(Usuario usuario) throws UsuarioContieneReservas;
	/**
	 * 
	 * Agregar un usuario nuevo al sistema.BEAN.
	 *
	 * @param datoUsuario
	 */
	void agregarUsuarioBean(Usuario usuario);
	/**
	 * 
	 * Buscar la lista de usuarios del sistema.
	 *
	 * @param datoUsuario
	 * @return
	 */
	List<Usuario> buscarUsuarios();
	//public boolean agregar(Usuario u2);
	//public Usuario buscarUsuario2(Usuario usuario) throws UsuarioNoExisteException;
	/**
	 * 
	 * TODO doc information expected for listar method.
	 *
	 * @return
	 */
	List<Usuario> listar();	
}
